#if (FEATURE_MODE == 0)
 /**
  @file ctc_at_srv6.h

  @author Copyright (C) 2018 Centec Networks Inc.  All rights reserved.

  @date 2019-1-1

  @version v6.0

The module support the new feature of segment route for ipv6.

\p
Segment Routing provides complete control over the forwarding paths by combining simple network instructions.
It does not require any additional protocol. Indeed in some cases it removes unnecessary protocols simplifying your network.

\p
Segment Routing can be used to steer traffic along any arbitrary path in the network. This allows operators to enforce
low-latency and / or disjoint paths, regardless of the normal forwarding paths

\p
The IPv6 flavor of Segment Routing allows user-defined functions to be associated with segments. By leveraging the IPv6 SID format
and the dedicated Segment Routing Extension Header, these functions may implement any computable behavior allowing for Network Function Virtualization.

\p
Use ctc_srv6_add_my_sid()/ctc_srv6_remove_my_sid()/ctc_srv6_update_my_sid() to manage MY SID.


\S ctc_srv6.h:ctc_srv6_type_t
\S ctc_srv6.h:ctc_srv6_sid_flag_t
\S ctc_srv6.h:ctc_srv6_sid_t

*/

#ifndef _CTC_USW_SRV6_H
#define _CTC_USW_SRV6_H
#ifdef __cplusplus
 extern "C" {
#endif

#include "sal.h"
#include "ctc_srv6.h"

 /****************************************************************
 *
 * Defines and Macros
 *
 ****************************************************************/

 /****************************************************************
  *
 * Function
 *
 ****************************************************************/
 /**
  @addtogroup srv6 SRv6
  @{
 */

 /**
  @brief  SRv6 init

  @param[in] lchip    local chip id

  @param[in] p_global_cfg    init global config

  @remark[AT] This function initialize tables and registers structures for SRv6 module.

  @return CTC_E_XXX

*/
extern int32
ctc_at_srv6_init(uint8 lchip, ctc_srv6_global_cfg_t* p_global_cfg);

 /**
  @brief De-Initialize SRv6 module

  @param[in] lchip   local chip id

  @remark[AT]  User can de-initialize the SRv6 configuration

  @return CTC_E_XXX

*/

extern int32
ctc_at_srv6_deinit(uint8 lchip);

/**
 @brief Add my sid table

 @param[in] lchip    local chip id

 @param[in] my_sid the property of my sid

 @remark[AT] Add my sid table

 @return CTC_E_XXX

*/
extern int32
ctc_at_srv6_add_my_sid(uint8 lchip, ctc_srv6_sid_t* my_sid);

/**
 @brief Remove my sid table

 @param[in] lchip    local chip id

 @param[in] my_sid the property of my sid

 @remark[AT] Remove my sid table

 @return CTC_E_XXX

*/
extern int32
ctc_at_srv6_remove_my_sid(uint8 lchip, ctc_srv6_sid_t* my_sid);

/**
 @brief Update my sid table

 @param[in] lchip    local chip id

 @param[in] my_sid the property of my sid

 @remark[AT] Update my sid table

 @return CTC_E_XXX

*/
 extern int32
ctc_at_srv6_update_my_sid(uint8 lchip, ctc_srv6_sid_t* my_sid);

 /**@} end of @addgroup   */

#ifdef __cplusplus
 }
#endif

#endif

#endif

